package com.zhuliwei.utils;

import com.zhuliwei.exception.SystemException;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.util.StringUtils;

import java.util.Collection;
import java.util.Objects;

/**
 * 鉴空-抛异常工具类
 *
 * @author 朱力维
 * @time 2023/6/8 10:36
 **/
public class AssertUtil {

    private AssertUtil() {
    }


    public static <T> void isEmpty(T[] array, String errorTip) {
        if (array == null || array.length == 0) {
            throw new SystemException(errorTip);
        }
    }

    public static void checkBlank(String data, String errorTip) {
        if (!StringUtils.hasText(data)) {
            throw new SystemException(errorTip);
        }
    }

    public static void checkNotBlank(String data, String errorTip) {
        if (StringUtils.hasText(data)) {
            throw new SystemException(errorTip);
        }
    }

//    public static void checkAnyBlank(String errorTip, String... data) {
//        if (StringUtils.isAnyBlank(data)) {
//            new SystemException(errorTip);
//        }
//
//        for (String datum : data) {
//            if (StringUtils.isBlank(datum)) {
//                throwE(errorTip);
//            }
//        }
//    }


    public static <T> void checkNull(T data, String errorTip) {
        if (Objects.isNull(data) || !StringUtils.hasText(data.toString())) {
            throw new SystemException(errorTip);
        }
    }

    public static <T> void checkNotNull(T data, String errorTip) {
        if (!Objects.isNull(data) && StringUtils.hasText(data.toString())) {
            throw new SystemException(errorTip);
        }
    }

    public static void checkEmpty(Collection<?> collection, String errorTip) {
        if (CollectionUtils.isEmpty(collection)) {
            new SystemException(errorTip);
        }
    }

    public static void checkNotEmpty(Collection<?> collection, String errorTip) {
        if (!CollectionUtils.isEmpty(collection)) {
            throw new SystemException(errorTip);
        }
    }

    public static void checkTrue(boolean value, String errorTip) {
        if (value) {
            throw new SystemException(errorTip);
        }
    }

    public static void checkFalse(boolean value, String errorTip) {
        if (!value) {
            throw new SystemException(errorTip);
        }
    }
}
